﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Comun;

namespace Guada
{
    public partial class FrmTurnos : Plantilla
    {
        private String especialidad;

        private String profesional;

        public FrmTurnos()
        {
            InitializeComponent();
        }

        private void FrmTurnos_Load(object sender, EventArgs e)
        {
                FacProFacu.Sistema sistema = new FacProFacu.Sistema();
                Controles control = new Controles();
                control.CargarCBox(CmbEspecialidad, sistema.GetEspecialidad().Tables["ESPECIALIDADES"], "CODIGO", "DESCRIPCION", Controles.ComboBoxLabel.TheSame);
                //CmbProf.SelectedText = "Todos";
                CmbProf.Enabled = false;
                this.cargarGrillaDeTurnos();
        }

        private void BtnReservar_Click(object sender, EventArgs e)
        {
            FrmDatosReserva Datos = new FrmDatosReserva();
            Datos.SetIdTurno("");
            Datos.ShowDialog();
            this.cargarGrillaDeTurnos();
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void CmbEspecialidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (CmbEspecialidad.SelectedIndex > 0)
            {
                FacProFacu.Sistema sistema = new FacProFacu.Sistema();
                Controles control = new Controles();
                control.CargarCBox(CmbProf, sistema.GetProfesionales(CmbEspecialidad.SelectedValue.ToString()).Tables["PROFESIONAL"], "CODIGO", "DESCRIPCION", Controles.ComboBoxLabel.TheSame);
                CmbProf.Enabled = true;
                this.cargarGrillaDeTurnos();
                if (dgTurnos.Rows.Count == 0)
                {
                    this.mostrarMensaje("Sin turnos disponibles para la Especialidad seleccionada.");
                }
            }
        }

        private void CmbProf_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (CmbProf.SelectedIndex > 0)
            {
                cargarGrillaDeTurnos();
                if (dgTurnos.Rows.Count == 0)
                {
                    this.mostrarMensaje("Sin turnos disponibles para el profesional seleccionado.");
                }
            }
        }

        private void cargarDatosFiltro(){
            this.setEspecialidad(CmbEspecialidad.SelectedValue.ToString());
            this.setProfesional(CmbProf.SelectedValue.ToString());
        }

        private void mostrarMensaje(String mensaje)
        {
            MessageBox.Show(mensaje, "Turnos no generados", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void dgTurnos_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            FrmDatosReserva Datos = new FrmDatosReserva();
            Datos.ShowDialog();
            this.cargarGrillaDeTurnos();
        }

        private void cargarGrillaDeTurnos()
        {
            try
            {
                this.cargarDatosFiltro();
                DataTable Dt = this.obtenerTurnosDisponibles();

                dgTurnos.DataSource = Dt;
                DataGridViewColumn col;
                dgTurnos.AutoGenerateColumns = false;
                dgTurnos.Columns.Clear();
                dgTurnos.ForeColor = Color.Black;

                DataGridViewCheckBoxColumn colChk = new DataGridViewCheckBoxColumn();
                colChk.DataPropertyName = "BOOLSINO";
                colChk.HeaderText = "Reservar";
                colChk.Name = "chkSINO";
                colChk.Width = 70;
                colChk.ValueType = System.Type.GetType("System.Boolean");
                colChk.TrueValue = true;
                colChk.FalseValue = false;

                colChk.ReadOnly = false;
                dgTurnos.Columns.Add(colChk);

                col = new DataGridViewTextBoxColumn();
                col.DataPropertyName = "IDTURNO";
                col.Name = "IDTURNO";
                col.Width = 90;
                col.HeaderText = "N° Turno";
                col.ReadOnly = true;
                dgTurnos.Columns.Add(col);
                col.Visible = true;

                col = new DataGridViewTextBoxColumn();
                col.DataPropertyName = "FECHA";
                col.Name = "FECHA";
                col.Width = 80;
                col.HeaderText = "Fecha";
                col.ReadOnly = true;
                dgTurnos.Columns.Add(col);

                col = new DataGridViewTextBoxColumn();
                col.DataPropertyName = "HORA";
                col.Name = "HORA";
                col.Width = 60;
                col.HeaderText = "Hora";
                col.ReadOnly = true;
                dgTurnos.Columns.Add(col);

                //col = new DataGridViewTextBoxColumn();
                //col.DataPropertyName = "IDPROFESIONAL";
                //col.Name = "IDPROFESIONAL";
                //col.Width = 1;
                //col.HeaderText = "N° Profesional";
                //col.ReadOnly = true;
                //col.Visible = false;
                //dgTurnos.Columns.Add(col);

                col = new DataGridViewTextBoxColumn();
                col.DataPropertyName = "PROFESIONAL";
                col.Name = "PROFESIONAL";
                col.Width = 150;
                col.HeaderText = "Profesional";
                col.ReadOnly = true;
                dgTurnos.Columns.Add(col);

                //col = new DataGridViewTextBoxColumn();
                //col.DataPropertyName = "IDESPECIALIDAD";
                //col.Name = "IDESPECIALIDAD";
                //col.Width = 1;
                //col.HeaderText = "N° Especialidad";
                //col.ReadOnly = true;
                //col.Visible = false;
                //dgTurnos.Columns.Add(col);

                col = new DataGridViewTextBoxColumn();
                col.DataPropertyName = "ESPECIALIDAD";
                col.Name = "ESPECIALIDAD";
                col.Width = 150;
                col.HeaderText = "Especialidad";
                col.ReadOnly = true;
                dgTurnos.Columns.Add(col);

                if (((DataTable)dgTurnos.DataSource).Rows.Count > 0)
                    dgTurnos.Rows[0].Selected = true;
            }
            catch
            {
                this.mostrarMensaje("No existen Turnos disponibles para el día de hoy.");
            }
        }

        private DataTable obtenerTurnosDisponibles()
        {
            FacProFacu.Turno turno = new FacProFacu.Turno();
            DataTable Dt = new DataTable();
            Dt = turno.GetTurnos(this.getEspecialidad(), this.getProfesional()).Tables["TURNOS"];
            return Dt;
        }

        private void setProfesional(String profesional)
        {
            this.profesional = profesional;
        }

        private String getProfesional()
        {
            return this.profesional;
        }

        private void setEspecialidad(String especialidad)
        {
            this.especialidad = especialidad;
        }

        private String getEspecialidad()
        {
            return this.especialidad;
        }
    }
}
